<?php	


class ReflectUtils{
	
	public static function  getAllproperties($nombeClase){
		$ref = new ReflectionClass($nombeClase);
		$props   = $ref->getProperties();
		if($padre = $ref->getParentClass()){
        	$padre_props = self::getAllproperties($padre->getName());
	        if(count($padre_props) > 0){
	            $props = array_merge($padre_props, $props);
	   		 }
		}
   	 	return $props; 
	}
	
	
	public static function  getAllAnnotatedProperties($nombeClase){
		$ref = new ReflectionAnnotatedClass($nombeClase);
		$props   = $ref->getProperties();
		if($padre = $ref->getParentClass()){
        	$padre_props = self::getAllproperties($padre->getName());
	        if(count($padre_props) > 0){
	            $props = array_merge($padre_props, $props);
	   		 }
		}
   	 	return $props; 
	}
	
	public static function getter($prop_nombre){
		return 'get'.strtoupper( substr($prop_nombre, 0,1)) .  substr($prop_nombre, 1) ;
	}
	
	public static function setter($prop_nombre){
		return 'set'.strtoupper( substr($prop_nombre, 0,1)) .  substr($prop_nombre, 1) ;
	}

	
	
}

?>